#pragma once

//  defines
#define SAFE_RELEASE(rel) if(rel) rel->Release(); rel = 0;
#include "IBaseState.h"
#include "../../Renderer/Header Files/CRenderer_AL.h"
#include "../../Renderer/Header Files/CSpriteNode_AL.h"
#include "../../Renderer/Header Files/CCamera_AL.h"
#include "../../Renderer/Header Files/C3DNode_AL.h"
#include <vector>
using namespace std;

//for outputting to the debug window..
#include <iostream>
#define DEBUG_OUTPUT(str) cout << str << std::endl

class CGame
{
private:
	vector<IBaseState*>			m_vStates;
	int							m_nWindowW,m_nWindowH;
	CRenderer_AL				*m_pRenderer;

public:
	CGame();
	~CGame(){}
	IBaseState* GetPrevState()              {return (IBaseState*)m_vStates.front();}

	static CGame* GetInstance();
	void Initialize();
	void PushState(IBaseState* pState);
	void PopState();
	bool Update(float fDT);
	void Shutdown();

};